@InProceedings{	  verna.18.els,
  author	= {Didier Verna},
  title		= {Method Combinators},
  booktitle	= {11th European Lisp Symposium},
  isbn		= 9782955747421,
  doi		= {10.5281/zenodo.3247610},
  year		= 2018,
  month		= apr,
  address	= {Marbella, Spain},
  abstract	= {In traditional object-oriented languages, the dynamic
		  dispatch algorithm is hardwired: for every polymorphic
		  call, only the most specific method is used. \textsc{Clos},
		  the Common Lisp Object System, goes beyond the traditional
		  approach by providing an abstraction known as \emph{method
		  combinations}: when several methods are applicable, it is
		  possible to select several of them, decide in which order
		  they will be called, and how to combine their results,
		  essentially making the dynamic dispatch algorithm
		  user-programmable.\par Although a powerful abstraction,
		  method combinations are under-specified in the Common Lisp
		  standard, and the \textsc{Mop}, the Meta-Object Protocol
		  underlying many implementations of \textsc{Clos}, worsens
		  the situation by either contradicting it or providing
		  unclear protocols. As a consequence, too much freedom is
		  granted to conforming implementations. The exact or
		  intended behavior of method combinations is unclear and not
		  necessarily coherent with the rest of \textsc{Clos}.\par In
		  this paper, we provide a detailed analysis of the problems
		  posed by method combinations, the consequences of their
		  lack of proper specification in one particular
		  implementation, and a \textsc{Mop}-based extension called
		  \emph{method combinators}, aiming at correcting these
		  problems and possibly offer new functionality.}
}

@book{Kiczales:1991:AMP:574212,
 author = {Kiczales, Gregor and Rivieres, Jim Des},
 title = {The  Art of the Metaobject Protocol},
 year = {1991},
 isbn = {0262111586},
 publisher = {MIT Press},
 address = {Cambridge, MA, USA},
} 

@book{Muchnick:1998:ACD:286076,
 author = {Muchnick, Steven S.},
 title = {Advanced compiler design and implementation},
 year = {1997},
 isbn = {1-55860-320-4},
 publisher = {Morgan Kaufmann Publishers Inc.},
 address = {San Francisco, CA, USA},
}

@book{ansi:common:lisp,
  author = {},
  title = {INCITS 226-1994[S2008] Information Technology, Programming Language, Common Lisp},
  publisher = {American National Standards Institute},
  year = {1994},
}

@article{Baker:1990:EIB:121989.121991,
 author = {Baker, Henry G.},
 title = {Efficient Implementation of Bit-vector Operation in Common Lisp},
 journal = {SIGPLAN Lisp Pointers},
 issue_date = {April-June 1990},
 volume = {III},
 number = {2-4},
 month = apr,
 year = {1990},
 issn = {1045-3563},
 pages = {8--22},
 numpages = {15},
 url = {http://doi.acm.org/10.1145/121989.121991},
 doi = {10.1145/121989.121991},
 acmid = {121991},
 publisher = {ACM},
 address = {New York, NY, USA},
}

@inproceedings{Schafmeister:Clasp,
 author = {Schafmeister, CE},
 title = {{Clasp--A Common Lisp that Interoperates with C++ and Uses the LLVM Backend}},
 booktitle = {Proceedings of the 8th European Lisp Symposium},
 year = {2015},
 location = {Goldsmiths, University of London, London, UK},
 pages = {90--91},
 numpages = {2},
 publisher = {ACM},
 address = {New York, NY, USA},
}

@inproceedings{Ayers:1997:AI:258915.258928,
 author = {Ayers, Andrew and Schooler, Richard and Gottlieb, Robert},
 title = {Aggressive Inlining},
 booktitle = {Proceedings of the ACM SIGPLAN 1997 Conference on Programming Language Design and Implementation},
 series = {PLDI '97},
 year = {1997},
 isbn = {0-89791-907-6},
 location = {Las Vegas, Nevada, USA},
 pages = {134--145},
 numpages = {12},
 url = {http://doi.acm.org/10.1145/258915.258928},
 doi = {10.1145/258915.258928},
 acmid = {258928},
 publisher = {ACM},
 address = {New York, NY, USA},
}

@article{Ayers:1997:AI:258916.258928,
 author = {Ayers, Andrew and Schooler, Richard and Gottlieb, Robert},
 title = {Aggressive Inlining},
 journal = {SIGPLAN Not.},
 issue_date = {May 1997},
 volume = {32},
 number = {5},
 month = may,
 year = {1997},
 issn = {0362-1340},
 pages = {134--145},
 numpages = {12},
 url = {http://doi.acm.org/10.1145/258916.258928},
 doi = {10.1145/258916.258928},
 acmid = {258928},
 publisher = {ACM},
 address = {New York, NY, USA},
}

@article{Scheifler:1977:AIS:359810.359830,
 author = {Scheifler, Robert W.},
 title = {An Analysis of Inline Substitution for a Structured Programming Language},
 journal = {Commun. ACM},
 issue_date = {Sept. 1977},
 volume = {20},
 number = {9},
 month = sep,
 year = {1977},
 issn = {0001-0782},
 pages = {647--654},
 numpages = {8},
 url = {http://doi.acm.org/10.1145/359810.359830},
 doi = {10.1145/359810.359830},
 acmid = {359830},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {compilers, inline substitution, open coding, open compilation, program optimization, run-time statistics, structured programming languages},
}

@inproceedings{Chang:1989:IFE:73141.74840,
 author = {Chang, P. P. and Hwu, W.-W.},
 title = {Inline Function Expansion for Compiling C Programs},
 booktitle = {Proceedings of the ACM SIGPLAN 1989 Conference on Programming Language Design and Implementation},
 series = {PLDI '89},
 year = {1989},
 isbn = {0-89791-306-X},
 location = {Portland, Oregon, USA},
 pages = {246--257},
 numpages = {12},
 url = {http://doi.acm.org/10.1145/73141.74840},
 doi = {10.1145/73141.74840},
 acmid = {74840},
 publisher = {ACM},
 address = {New York, NY, USA},
}

@article{Chang:1989:IFE:74818.74840,
 author = {Chang, P. P. and Hwu, W.-W.},
 title = {Inline Function Expansion for Compiling C Programs},
 journal = {SIGPLAN Not.},
 issue_date = {July 1989},
 volume = {24},
 number = {7},
 month = jun,
 year = {1989},
 issn = {0362-1340},
 pages = {246--257},
 numpages = {12},
 url = {http://doi.acm.org/10.1145/74818.74840},
 doi = {10.1145/74818.74840},
 acmid = {74840},
 publisher = {ACM},
 address = {New York, NY, USA},
}

@article{Liskov:1977:AMC:359763.359789,
 author = {Liskov, Barbara and Snyder, Alan and Atkinson, Russell and Schaffert, Craig},
 title = {{Abstraction Mechanisms in CLU}},
 journal = {Commun. ACM},
 issue_date = {Aug. 1977},
 volume = {20},
 number = {8},
 month = aug,
 year = {1977},
 issn = {0001-0782},
 pages = {564--576},
 numpages = {13},
 url = {http://doi.acm.org/10.1145/359763.359789},
 doi = {10.1145/359763.359789},
 acmid = {359789},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {control abstractions, data abstractions, data types, programming languages, programming methodology, separate compilation},
}

@book{Jones:1993:PEA:153676,
 author = {Jones, Neil D. and Gomard, Carsten K. and Sestoft, Peter},
 title = {Partial Evaluation and Automatic Program Generation},
 year = {1993},
 isbn = {0-13-020249-5},
 publisher = {Prentice-Hall, Inc.},
 address = {Upper Saddle River, NJ, USA},
}